[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してディスプレイに表示してみました
IoT事業部の平内(SIN)です。
M5Stack Core2 for AWSを使うために、ここまで、PlatformIOで新規プロジェクトを作成して作業を始めることこと、Core2 for AWS IoT EduKit BSPを組み込みを試してみました。
今回は、引き続き、Core2 for AWS IoT EduKit BSPを使用して、画面周りの表示を確認してみました。
2 文字列出力
ここまでの作業で、BSPが、セットアップできているので、同じプロジェクトでapp_main() を下記のように書き換えるだけで、画面への文字列出力が可能です。
main.c
#include "freertos/FreeRTOS.h" #include "freertos/semphr.h" #include "core2forAWS.h" void app_main(void){ Core2ForAWS_Init(); Core2ForAWS_Display_SetBrightness(80); xSemaphoreTake(xGuiSemaphore, portMAX_DELAY); lv_obj_t * hello_label = lv_label_create(lv_scr_act(), NULL); lv_label_set_text(hello_label, "Hello World"); lv_obj_align(hello_label, NULL, LV_ALIGN_CENTER, 0, 0); xSemaphoreGive(xGuiSemaphore); }
2 ILI9342C
ディスプレイは、SPIバスに接続されたILI9342Cでドライブされています。
Core2 for AWS IoT EduKit BSPでは、ILI9342Cを使用するために、LVGLライブラリを使用しているため、実際の利用方法は、こちらのドキュメントを参照する事になります。
https://docs.lvgl.io/latest/en/html/widgets/index.html
なお、LVGL APIをコールする前後で、xGuiSemaphoreのセマフォの取得及び、開放が必要です。
https://edukit.workshop.aws/en/api-reference/xguisemaphore_variable.html
3 行単位でテキスト表示
行単位でテキストを表示してみました。lv_obj_alignで、基準位置からの相対位置を指定できます。
#include "freertos/FreeRTOS.h" #include "freertos/semphr.h" #include "core2forAWS.h" void app_main(void){ Core2ForAWS_Init(); Core2ForAWS_Display_SetBrightness(80); xSemaphoreTake(xGuiSemaphore, portMAX_DELAY); char buffer[128]; const int LINE_HEIGHT = 20; // 行の高さ const int LEFT_MARGIN = 10; // 左余白 const int LINE_MAX = 10; // 表示行数 for (int i = 0; i < LINE_MAX; i++) { lv_obj_t * my_label = lv_label_create(lv_scr_act(), NULL); sprintf(buffer, "%2d Hello World.", i); lv_label_set_text(my_label, buffer); lv_obj_align(my_label, NULL, LV_ALIGN_IN_TOP_LEFT, LEFT_MARGIN, i * LINE_HEIGHT); } xSemaphoreGive(xGuiSemaphore); }
4 その他
LVGLライブラリは、文字列の表示だけではなく、あらゆるコントロール等の描画が可能になっています。
- ボタン
- チェックボックス
- スライダー
Getting Startの画面で表示されていたファンや、家も、lv_img_create、lv_img_set_srcで描画されていますが、画像データについては、cのソースファイルとなっているようでした。
5 最後に
今回は、新規作成したプロジェクトに、Core2 for AWS IoT EduKit BSPを組み込み、ディスプレイを操作してみました。
久々のC言語で、ちょっと戸惑ってますが、続けて、BSPの各種モジュールを試してみたいと思います。
6 参考リンク
Visual Studio Code + PlatformIO 環境で M5Stack Core2 for AWS でHello Worldしてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してLEDを光らせてみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してディスプレイに表示してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して仮想ボタンの動作を確認してみました
[M5Stack Core2 for AWS] LVCLを使用してディスプレイ上のボタンの動作を確認してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して電源を操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してスピーカーを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用して静電容量式タッチパネルを操作してみました
[M5Stack Core2 for AWS] Core2 for AWS IoT EduKit BSPを使用してジャイロセンサーを操作してみました
[M5Stack Core2 for AWS] PlatformIO を使用して、ArduinoでHello Worldしてみました
[M5Stack Core2 for AWS] ArduinoでLED (Adafruit NeoPixel フルカラーLED) を点灯してみました
[M5Stack Core2 for AWS] Arduinoで仮想ボタンを作成してみました
[M5Stack Core2 for AWS] ArduinoでMQTT接続してみました
[M5Stack Core2 for AWS] Arduinoでオーディオファイルを再生してみました
[M5Stack Core2 for AWS] Arduinoでマイクの利用方法を確認してみました
[M5Stack Core2 for AWS] ArduinoでGroveポートのGPIOを使用しててみました